/*
2021-11-2
https://www.acwing.com/problem/content/4007/
*/ 
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;
const int N=52;
char g[N][N];
bool st1[N][N],st2[N][N];
int n;
int dx[]={1,-1,0,0},dy[]={0,0,1,-1};
int sx,sy,ex,ey;

void dfs(int x,int y,bool st[][N])
{
    st[x][y]=true;
    for(int i=0;i<4;i++)
    {
        int a=x+dx[i],b=y+dy[i];
        if(a>=1 && a<=n && b>=1 && b<=n && g[a][b]=='0' && !st[a][b])
            dfs(a,b,st);
    }
}

int main()
{
    cin>>n;
    cin>>sx>>sy>>ex>>ey;
    
    for(int i=1;i<=n;i++)
        cin>>g[i]+1;
    
    dfs(sx,sy,st1);
    if(st1[ex][ey]) puts("0");
    else
    {
        dfs(ex,ey,st2);
        int res=1e9;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                if(st1[i][j])
                    for(int x=1;x<=n;x++)
                        for(int y=1;y<=n;y++)
                            if(st2[x][y])
                                res=min(res,(i-x)*(i-x)+(j-y)*(j-y));
            
        cout<<res<<endl;
    }
    
    return 0;
}
